package queuelinked;

public class LinkedListQueue {
    //队列的前端指针
    public QueueNode front;
    //队列的尾端指针
    public QueueNode rear;

    //构造函数
    public LinkedListQueue() {
        front = null;
        rear = null;
    }

    //方法queue；队列数据的存入
    public Boolean enqueue(int value) {
        QueueNode node = new QueueNode(value);//建立节点
       //检查是否为空队列
        if (rear == null){
            //新建立的节点成为第一个节点
            front = node;
        }else {
            //将节点加入到队列的尾端
            rear.next = node;
        }
        //将队列的尾端指针指向新加入的节点
        rear = node;
        return true;
    }

    //方法 dequeue:队列数据的取出
    public int dequeue(){
        int value;
        //检查队列是否为空队列
        if (!(front == null)){
            if (front == rear){
                rear = null;
            }
            value = front.data;//将队列数据取出
            front = front.next;//将队列的前端指针指向下一个
            return value;
        }else {
            return -1;
        }
    }
}
